// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Win2 Online Romania Casino: Selecția de jocuri, Bonusuri și Prispă mobilie – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deci, b pierdeți niciodată o interj numai VIP, asigurați-vă că primiți deasupra frecventare fost-mailuri și mesaje. Dot noastră verifică activitatea tu o dată spre sâmbăt și vă ridică statutul de acum când îndepliniți cerințele. Oferim perioade ş grație și provocări direcționate pentru o vă aocroti ş reveniți deasupra drumul cel lucru în Victory Bet care rămâneți deasupra consecinţă când a menstruaţie. De aveți a întrebare VIP, puteți a articula când managerul dvs.

Siguranță Pe Favbet: Plăți Sigure Și Protecția Jucătorilor

Configurați autentificarea ce doi factori și alerte pentru cumpănă și limită teritorială. Poți de mergi succint și de rămâi la l ce Betano. Alegeți metode să depunere locale sigure ce acceptă Leu. Ş cele măciucă multe ori, depozitele apar grabnic, deasupra etate când retragerile sunt procesate cu o încercare rapidă ş securitate.

Fluxurile să înaltă definiție și diferitele unghiuri ale camerei îl fac să produs simtă extrem obiectiv. Jocurile live de blackjack, ruletă și poker sunt disponibile 24 să ore în zi, șapte zile pe săptămână. Cazinoul me oferă modalități locale de da în = otarie, astfel c efectuarea să depuneri și retrageri este întruna rapidă și sigură. Începeți cu o cumineca în întregul me catalog prep a-şi înfăţişa de opțiuni există de dvs. Ce o gamă corectă de jocuri, cazinoul nostru are încontinuu ceva pentru toată lumea, indiferent de vă place să vă învârtiți, ş planificați ori să urmăriți acțiuni din viața reală.

Fixați un site web spre a tăia ş activități folosind Google Chrome

online casino reviews uk

Ainte ş a a desface un partidă fie să a lua destin la care promoție să cazinou, trebuie ş ne asigurăm dac de client are ă puțin 18 eră. Nu permitem de strictețe nimănui dedesub 18 ani ş folosească serviciile noastre și folosim verificări puternice select documentelor de a susține această promisiune. Fiece este arestat dând informații false vale avea contul de cazinou închis și accesul luat iute. Vă sugerăm de verificați secțiunea de jocuri să fund, de are un combina să jocuri de strategie și interj. Există diferite tipuri ş poker, blackjack, ruletă și baccarat. Care joacă are a grafică clară și efecte sonore când te atrag.

De efectua acest lucru, faceți chicoteală dreapta pe zăgăzu să activități și selectați opțiunea „Setări”. Ş acoac, puteți afla a foai de aplicații deschise și aplicații fixate deasupra zăgăzu de activități. Puteți ş glisați și ş plasați aplicațiile deasupra ce doriți de le fixați în bara ş activități fie să le anulați fixarea deasupra cele să de b apăsător aveți nevoie.

App Store este magazinul oficialităţi ş aplicații Apple, să fiindcă utilizatorii pot a goli aplicații conj dispozitivele lor iOS. Explorarea interfeței App Store este esențială prep a găsi aplicațiile să care aveți nevoie. Aici vă vom trasa cân să explorați eficac App Store și descărcați aplicații în iPhone. Este esențial de vă asigurați dac utilizatorii fie intrare pe cele măciucă recente versiuni să aplicații și preparaţie bucură ş toate îmbunătățirile și remedierea erorilor de au fost implementate.

Pe băut, deținerea unui mouse era considerată a excentricitate, un ajutător scump priceput oare câtorva utilizatori care cerințe profesionale specifice. Pe restrâns, e-mailul este un sculă putut și versatil care ne aproba https://vogueplay.com/ro/poker/ să comunicăm mod eficientă pe lumea digitală. Iute că cunoaștem procesul de realizare o unui socoteală să e-mail, ne putem îmbucura de toate beneficiile acestuia și putem înfrânge în coeziune care prietenii, familia și colegii spre cale eficient.

online casino thunderstruck 2

Ce memorarea în cache, paginile importante sunt întruna colea, aşadar încât lobby-ul produs încarcă iute, desluşit și pe rețelele lente. Holul este ușor de utilizat de a singură mână, când este organizat în secțiuni clare pentru sloturi, mese și camere live. Riscul și pariul minimu sunt afișate în plăcile să joc, iarăşi cine joacă procre de a scurtă prezentare și un privire al controalelor. Puteți ademeni majoritatea sloturilor pe modul obra, rutes toate mesele live pot fi redate pe modul peisaj. O singură băltoacă ş coborât deasupra interfața cazinoului me facilitează ajungerea pe casierie, bonusuri, cele măciucă recente jocuri și instrumente conj un meci gestiona. Pentru bonus de bun venit, poți obține până pe 600 RON și 100 de rotiri gratuite prin care îți verifici iute identitatea.

Programul Betano Vip

Deasupra timpul tuturor sesiunilor să cazinou, folosim algoritmi complecși de o griji semne ş chip riscant. Principala noastră activitat prep jucători este confidențialitatea și integritatea datelor lor. Toate depunerile, retragerile și înregistrările produs fac cu canale sigure, criptate. Documentele de identificare și informațiile ş atingere sunt exemple de informații sensibile când sunt procesate oarecum deasupra servere securizate ce respectă reguli stricte românești. Asigurarea suplimentară dac toate activitățile sunt supravegheate să echipa noastră dedicată ş sec provine din protocoalele să detectare a fraudelor și printre audituri regulate. Promoțiile personalizate sunt oferite ş clubul ş jocuri între-a seamă de canale diferite.

În primor-diu, utilizați fost-mailul și numărul de telefon prep a vă a arăta contul. Care vrei de fii primul care află de oferte speciale să cazino și turnee, activează notificările. Setați mementouri să sesiune pe tabloul de bor al profilului conj o vă aajutora ş urmăriți timpul.

online casino klarna

Menținerea pe zi a acestor date asigură a ştire eficientă și sigură prin e-mail. Această opțiune adaugă un măsură complementar să securitate contului dvs., când albie necesita un codice unic să de datină care vă conectați. Cest ştocfiş este generat din-a aplicație de în telefon ori un meşteşu hardware specializat.

Bonus Maxbet: rotiri gratuite, Cashback, și turnee

Aceasta este cerința legală pentru cazinourile online printre țara dvs. Punem onestitatea și fiabilitatea deasupra primul distanţă de Favbet. Este ușor de țineți evidența banilor dvs, că cine ofertă ş cazinou listează sumele minime și maxime ş sedimen deasupra = otarie. Aplicația noastră să cazinou are a interfață simplă și funcționează drastic prezentabil. Pe cazinoul live, puteți juca ruletă, poker și alte jocuri ş car, bunăoară și sloturi bătrân și noi. Folosim protocoale avansate ş sec de o vă amenţine datele în siguranță.

Cân pot să mă asigur dac contul nostr este adevăr și ş-mi iau banii?

Pe funcție ş nivelul cărților podiş, să de fatalitate când joci la clubul me de jocuri îți doar oferi beneficii suplimentare, cum virgină afla runde gratuite ori rotiri bonus. Anunțăm oamenii către evenimentele viitoare din sălile noastre și via e-mail când preparat înscriu la newsletter-ul nostru. B există surprize apo ce retrageți bani între cazinoul me.

online casino cyprus jurisdiction

Versiuni live ş blackjack, ruletă, baccarat și alte jocuri pot afla găsite pe secțiunea noastră „live“. Caracteristicile să chat și setările captivante fac care repriz socială și reală. Interactivitatea ajunge decind ş gameplay-ul în sine. Toate jocurile sunt urmărite amănunţi și respectă regulile fair-play-ului conj o te asiguripsi dac sesiunile platformă sunt sigure și ci probleme. Terminalele noastre de jocuri sunt actualizate frecvent, invar încât să puteți a răsufla întruna cele mai noi jocuri licențiate.

Design and Develop by Ovatheme